package com.cqc.util;


import com.google.gson.Gson;
import com.google.gson.JsonParser;

import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;

public class GsonUtil {
    /**
     * 1 json  ---> map<>   2 map<> --->json
     * 3 json  ---> list    4 list  ---> json
     * 5 json  ---> bean    6 bean  ---> json
     */
    //json  ---> map<>  Type type = new TypeToken<HashMap<String, Object>>() {}.getType();
    public static Map<String, Object> jsonToMap(String json, Type type) {
        if (json != null) {
            Gson gson = new Gson();
            return gson.fromJson(json, type);
        } else {
            return null;
        }
    }

    //json  ---> list   new TypeToken<List<?>>() {}.getType()
    public static List<?> jsonToList(String json, Type type) {
        if (json != null) {
            Gson gson = new Gson();
            return gson.fromJson(json, type);
        } else {
            return null;
        }
    }

    //json  ---> bean
    public static <T> T jsonToBean(String json, Class<T> clazz) {
        if (json != null) {
            Gson gson = new Gson();
            return gson.fromJson(json, clazz);
        } else {
            return null;
        }
    }



    //bean  ---> json
    public static String toJson(Object obj) {
        if (obj != null) {
            Gson gson = new Gson();
            return gson.toJson(obj);
        } else {
            return null;
        }
    }

    /**
     * 获取某个属性的值(也可以转成map再获取)
     *
     * @param json         json数据
     * @param propertyName 属性名
     * @return 属性值
     */
    public static String getElementValue(String json, String propertyName) {
        return new JsonParser().parse(json).getAsJsonObject().get(propertyName).getAsString();
    }


}
